package com.sicheng.蓝桥.练习题;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author zsc
 * @version 1.0
 * @date 2022/4/6 11:40
 */
public class 跳跃的小明 {
    /**
     * 跳跃的小明
     * 有一条长为n的走廊，小明站在走廊的一端，每次可以跳过不超过p格，每格都有一个权值wi。
     * 　　 小明要从一端跳到另一端，不能回跳，正好跳t次，请问他跳过的方格的权值和最大是多少？
     */
    static int N = 1010;
    static int n, p, t;
    //通过j步走到第i个格子的最大权值
    static int[][] dp = new int[N][N];
    static int[] weight = new int[N];

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        p = sc.nextInt();
        t = sc.nextInt();
        for (int i = 1; i <= n; ++i)
            weight[i] = sc.nextInt();
        for (int[] a : dp) {
            Arrays.fill(a, -0x3f3f3f);
        }
        //初始化：通过第一步能走到的位置
        for (int i = 1; i <= p && i <= n + 1; ++i)
            dp[i][1] = weight[i];

        //走到第i格
        for (int i = 1; i <= n + 1; ++i) {
            //通过j步
            for (int j = 2; j <= t; ++j) {
                //上一次走了k步到达第i格
                for (int k = 1; k <= p && k <= i; ++k) {
                    dp[i][j] = Math.max(dp[i - k][j - 1] + weight[i], dp[i][j]);
                }
            }
        }
        System.out.println(dp[n + 1][t]);
    }
}
